package com.jiantong.work.service;

import com.jiantong.user.ext.LoginUser;
import com.jiantong.work.model.ButcherAdmissionInspection;
import io.terminus.common.model.Paging;
import io.terminus.common.model.Response;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by niufei on 2017/3/17.
 * 入场监督检查
 */
public interface ButcherAdmissionInspectionReadService {

    /**
     * 查询入场监督检查的单据--单条
     * @param id 单据主键
     * @return ButcherAdmissionInspection 对象
     */
    Response<ButcherAdmissionInspection> findById(Long id);

    /**
     * 分页查询 入场监督检查的单据
     * 也可以根据状态分页查询
     * @param pageNo 页码
     * @param pageSize 每页的条数
     * @param butcherSelected 状态
     * @return paging < ButcherAdmissionInspection >
     */
    Response<Paging<ButcherAdmissionInspection>> pagingButcherAdmissionInspection(Integer pageNo, Integer pageSize, Integer butcherSelected, LoginUser loginUser);

    /**
     * 分页查询 入场监督检查的单据---屠宰端选择数据
     * @param pageNo 页码
     * @param pageSize 每页的条数
     * @return paging < ButcherAdmissionInspection >
     */
    Response<Paging<ButcherAdmissionInspection>> pagingButcherAdmissionInspectionByButcherFactoryId(Integer pageNo,Integer pageSize,LoginUser loginUser);

    /**
     *
     * @param pageNo 页码
     * @param pageSize 页数
     * @param butcherSelected 参数
     * @return 分页的对象
     */
    Response<Paging<ButcherAdmissionInspection>> pagingButcherAdmissionInspectionAll(Integer pageNo, Integer pageSize, Integer butcherSelected);

    Response<Map<String , Object>> findStatusById(Long id);

    /**
     * 查询合计 （申报数、合格数、不合格数）
     * @param start 从日期
     * @param end 到日期
     * @param productType 产品种类
     * @return List<Map<String , BigDecimal>>
     */
    Response<List<Map<String , BigDecimal>>> findSum(Date start , Date end , Integer productType);

    /**
     * 查询合计 （是否是本地）
     * @param start 从日期
     * @param end 到日期
     * @param productType 产品种类
     * @return List<Map<String , Integer>>
     */
    Response<List<Map<String , Integer>>> findSumIsLocal(Date start , Date end , Integer productType);

    /**
     * 查询合计 （根据屠宰场）
     * @param start 从日期
     * @param end 到日期
     * @param productType 产品种类
     * @return List<Map<String , BigDecimal>>
     */
    Response<List<Map<String , BigDecimal>>> findSumButcherFactory(Date start , Date end , Integer productType);

    Response<Paging<ButcherAdmissionInspection>> pagingcommon(Integer pageNo, Integer pageSize,Map criteria);
}
